$(function(){
    var role_datagrid =  $("#role_datagrid");
    var role_dialog = $("#role_dialog");
    var allPermission = $("#allPermission");
    var selfPermission = $("#selfPermission");
    var role_form = $('#role_form');
    var allPermissions = {};
    //role_datagrid 数据表初始化

    role_datagrid.datagrid({
        url:'/role/list',
        striped:"true",
        pagination:"true",
        singleSelect:"true",
        fit:"true",
        fitColumns:"true",
        toolbar: '#role_toolbar',
        //在用户点击一行的时候触发事件
        onClickRow:function(index, row){
            if(row.state==1){
                $("#change_btn").linkbutton({
                    text:"停用"
                })
            }else if(row.state==0){
                $("#change_btn").linkbutton({
                    text:"恢复"
                })

            }
        },
        columns:[[
            {field:'x',checkbox:true},
            {field:'id',title:'编号',width:100},
            {field:'sn',title:'编码',width:100},
            {field:'name',title:'角色名称',width:100}
        ]]
    })
    //role_datagrid 数据表初始化-------end

    //保存/编辑对话框 初始化
    role_dialog.dialog({
        width: 500,
        height: 450,
        closed: false,
        closed:true,
        buttons:"#dialog_buttons"

    });
    //保存/编辑对话框 初始化 ----end


    //所有权限
    allPermission.datagrid({
        url:'/permission/permissions',
        height:'300',
        striped:"true",
        singleSelect:"true",
        fitColumns:"true",
        //在用户点击一行的时候触发事件
        onDblClickRow: function(index,row){
            selfPermission.datagrid("appendRow",row);


            allPermission.datagrid("deleteRow",index);
        },
        //在数据加载成功的时候触发。 事件
        onLoadSuccess:function(data){
            allPermissions = $.extend(true,{},data);
        },
        columns:[[
            {field:'id',title:'编号',width:100},
            {field:'name',title:'权限名称',width:100}
        ]]
    })

    //自身权限
    selfPermission.datagrid({
        height:'300',
        striped:"true",
        singleSelect:"true",
        fit:"true",
        fitColumns:"true",
        //在用户点击一行的时候触发事件
        onDblClickRow: function(index,row){
            allPermission.datagrid("appendRow",row);


            selfPermission.datagrid("deleteRow",index);
        },
        columns:[[
            {field:'id',title:'编号',width:100},
            {field:'name',title:'权限名称',width:100}
        ]],
        onLoadSuccess:function(data){

            //以id为删除 依据
           var ids = $.map( data.rows, function(n){
                return n.id;
            });

           //获取所有权限
            var allData = allPermission.datagrid("getRows");
            for(var i = allData.length-1;i>=0;i--){
                if($.inArray(allData[i].id, ids) >= 0){
                    allPermission.datagrid("deleteRow",i);
                }
            }
        }
    })

    var cmdObj = {
        reload:function(){
            role_datagrid.datagrid("reload")
        },
        add:function(){
            //清除form 表单 缓存数据
            role_form.form('clear');
            //清除 权限分配框
            selfPermission.datagrid("loadData",{"total":0,"rows":[]});

            allPermission.datagrid("loadData",allPermissions);

            role_dialog.dialog("setTitle","角色保存");
            role_dialog.dialog("open");
        },
        save:function(){
            var url ="/role/save";
            var id = $("[name='id']").val();
            if(id){
                url ="/role/update";
            }
            role_form.form('submit', {
                url:url,
                onSubmit: function(param){
                    //获取 角色权限所有行
                    var rows = selfPermission.datagrid("getRows");
                    $.each(rows, function(i, n){
                        param["permissions["+i+"].id"]=n.id;
                    });

                },
                success:function(data){
                    var data = $.parseJSON(data);
                    if(data.success){
                        role_dialog.dialog("close");
                        role_datagrid.datagrid("reload");
                    }else{
                        $.messager.alert('温馨提示',data.msg);
                    }
                }
            });

        },
        edit:function(){

            //判断是否选中
            var row = role_datagrid.datagrid("getSelected")
            if(row == null){
                $.messager.alert('温馨提示',"请选中需要编辑的角色");
                return ;
            }
            //清空 旧数据
            role_form.form('clear');

            //同名匹配  角色回显问题
            if (row.manager){
                row["manager.id"]=row.manager.id;
            }

            //把数据加载到 对话框的表单中
            role_form.form('load',row);

            //加载当前编辑角色觉有的权限
            //返回 datagrid 属性对象
            var options = selfPermission.datagrid("options")
            options.url="/permission/permissionsByRoleId?id="+row.id;
            selfPermission.datagrid("load")
            role_dialog.dialog("setTitle","角色编辑");
            role_dialog.dialog("open");
        },
        remove:function(){
            //判断是否选中
            var row = role_datagrid.datagrid("getSelected")
            if(row == null){
                $.messager.alert('温馨提示',"请选中需要编辑的角色");
                return ;
            }

            $.get("/role/delete?id="+row.id,function(data){
                if (data.success){
                    role_datagrid.datagrid("reload")
                }else{
                    $.messager.alert('温馨提示',data.msg);
                }

            })
        },
        cancel:function(){
            role_dialog.dialog("close")
        }

    }

    //代码优化
    $("a[data-cmd]").click(function(){
        var cmd = $(this).data("cmd");
        cmdObj[cmd]();
    });

})